﻿using Cysharp.Threading.Tasks;
using UnityEngine;

namespace GameFramework.Localization
{
    /// <summary>
    /// 本地化服务
    /// </summary>
    public interface ILocalizationService
    {
        /// <summary>
        /// 获取/设置当前语言 在切换语言时会自动清理旧语言的本地化数据
        /// </summary>
        SystemLanguage CurrentLanguage { get; set; }

        /// <summary>
        /// 本地化服务状态
        /// </summary>
        LocalizationStatus Status { get; }

        /// <summary>
        /// 加载当前语言的本地化数据 若已加载完成则直接返回，若当前正处于异步加载状态，则会等待加载完成 不会发起新的加载
        /// </summary>
        /// <returns>错误码 0代表成功</returns>
        UniTask<int> LoadAsync();

        /// <summary>
        /// 清理本地化数据
        /// </summary>
        void Clean();
    }
}